1、初始化用户
1 2
| $ git config --global user.email "your email" $ git config –-global user.name "your name"
|
2、秘钥
查看是否存在秘钥
id_rsa
是私钥,id_rsa.pub
是公钥
id_rsa.pub
是你需要上传到git仓库的SSH KEY
生成秘钥
1
| $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
|
3、本地库和远程库
①已创建有远程库,未创建本地库
②已创建本地库,未创建远程库
1 2 3 4 5 6 7 8 9 10 11 12
| $ mkdir test
$ git init
$ git remote rm origin
$ git remote add origin "your remote repo"
$ git pull
$ git push --set-upstream origin master
|
4、分支操作
查看、新建、切换、删除分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| $ git branch
$ git branch -a
$ git remote -v
$ git branch "new branch"
$ git checkout "target branch"
$ git checkout -b "new branch"
$ git checkout -b "new branch" origin/"new branch"
$ git merge "your branch"
$ git branch -d "your branch"
$ git branch -D "your branch"
|
5、正常流程
1 2 3 4 5 6 7 8 9 10 11 12
| $ git status
$ git add xxx.txt
$ git add .
$ git commit -m "I add a file."
$ git push
$ git push --set-upstream origin master
|
6、对比文件
1 2 3 4 5 6
| $ git diff "xxx.txt"
$ git diff --cached(--staged) "xxx.txt"
$ git diff master
|
7、查看历史提交记录
8、版本回退
1 2 3 4
| $ git reset --hard HEAD^
$ git reset –hard cb926e7e
|
9、撤销工作区修改
使用版本库中的文件或者暂存区中的文件替换工作区的文件
让文件回到最近一次 git commit 或 git add 时的状态
1
| $ git checkout -- "xxx.txt"
|
10、删除文件
1 2 3 4 5 6
| $ rm "xxx.txt"
$ git rm "xxx.txt"
$ git commit -m "remove file"
|
11、分支管理策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活
developer分支用来干活,也就是说,developer分支是不稳定的,到某个时候,比如1.0版本发布时,再把developer分支合并到master上,在master分支发布1.0版本
你和你的小伙伴们每个人都在developer分支上干活,每个人都有自己的分支,时不时地往developer分支上合并就可以了
所以,团队合作的分支看起来就像这样:

12、储藏工作现场
修复bug
时,我们会通过创建新的bug分支
进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash
一下,然后去修复bug
,修复后,再git stash pop
,回到工作现场
1 2 3 4 5 6 7 8
| $ git stash
$ git stash list
$ git stash apply
$ git stash pop
|
13、多人协作工作模式
试图用git push origin branch-name
推送自己的修改
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull
试图合并
如果合并有冲突,则解决冲突,并在本地提交
没有冲突或者解决掉冲突后,再用git push origin branch-name
推送就能成功
14、创建.gitignore
在git
工作区根目录下创建.gitignore
文件,把要忽略的文件名写进去,git
就会自动忽略这些文件
15、创建别名
给status
创建别名st
1
| $ git config --global alias.st status
|
16、git 配置文件
配置文件放在~/.gitconfig
17、git fetch
和git pull
区别
要讲清楚这两个命令的区别,就需要从git clone
开始讲起
假设你在github上有一个远程仓库地址是xxx,然后你从远程仓库
clone到本地仓库
执行完此命令后:
- ①Git会自动为你将远程仓库命名为origin,并下载其中所有的数据到本地;
- ②在本地建立所有远程存在的分支,并且命名为origin/xxx,例如远程分支有master、developer,那么本地就会建立origin/master分支、origin/developer分支,并且它们都是处于remotes目录下,是隐藏的。使用命令git branch -a就可以看到隐藏目录remotes,结果显示为remotes/origin/master以及remotes/origin/developer。
- ③接着,Git会继续建立一个属于你的本地master和developer分支,位置和远程origin/master、origin/developer分支处于相同的位置,你就可以开始工作了。
这样,我们在本地仓库的本地分支和远程分支就都有了,并且始于同一位置。
如果其他人向github上xxx分支推送了他们的更新,那么服务器上的相应分支就会向前推进。
如果在本地的相应分支进行了commit提交到本地代码库,那么本地的master或者developer分支也会向前推进,不过只要你不和服务器通信数据,那么本地的remotes/origin/master(developer)指针仍然会在原地不动。
运行git fetch origin
命令后,会同步远程服务器上的数据到本地;
该命令首先找到origin是哪个服务器,从上面获取你未曾拥有的数据,更新到你的本地remotes/origin/master(developer)
,然后把remotes/origin/master(developer)
的指针移动到最新的位置上:
比较本地master分支
和origin/master分支
有什么区别
1
| $ git log master..origin/master
|
切换到本地master
分支下
合并origin/master分支
到本地master分支
1
| $ git merge origin master
|
git pull
相当于git fetch origin
和git merge
git fetch
相当于先将服务器上的origin分支
更新到本地remotes/origin分支
上,然后手动去merge
合并origin分支
到本地分支
上
这就是git pull
和git fetch
的区别
18、git删除未跟踪文件
1 2 3 4 5 6 7
| $ git clean -f
$ git clean -fd
$ git clean -nf $ git clean -nfd
|
19、在本地删除远程已经没有的分支
20、重命名本地分支
1
| $ git branch -m old-local-branch-name new-local-branch-name
|
21、删除远程分支
1
| $ git push origin :old-remote-branch-name
|
22、本地分支与远程分支建立关联(远程分支不存在也可以)
1 2 3 4
| $ git checkout local-branch
$ git push -u origin/remote-branch
|
23、重新跟踪远程文件
1 2 3 4 5 6
| $ git remote rm origin
$ git remote add origin https://xxx.git
$ git remote origin set-url https://xxx.git
|
来源: https://www.cnblogs.com/hls-code/p/15428026.html