-
Notifications
You must be signed in to change notification settings - Fork 0
/
git_command_help.txt
92 lines (71 loc) · 4.76 KB
/
git_command_help.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
git add -A 可以一下子把所有的文件都加在stage里 :)
用.比较危险,*.txt还好点,最好还是一个文件一个文件add
现在,使用两次命令git add ,这里可以顺带提议git add . (后面加点这个参数,目录下文件都提交。)
提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:
如果有光标停留在END处走不动的,可以按q继续执行
(use "git reset HEAD <file>..." to unstage) //取消文件缓冲区的提交
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
git checkout -- file命令中的--很重要,没有--,就变成了“创建一个新分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。
git checkout -- filename 中的「--」应该只是用来指明后面跟的是文件名,而不是可能存在的分支名,如果「创建新分支」的话应该是带上 -b 选项才对。
清空缓存区中的某文件记录
git reset HEAD readme.txt
删除版本库文件
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
//ssh模式关联远程库
git remote add origin git@server-name:path/repo-name.git
//https模式
git remote add origin https://github.com/path/repo-name.git
//删除当前的远程关联,当我们要换远程仓库时,我们要删除当旧关联,才能建新关联。
//上面的说法是错的,我们可以同时关联多个,但是命令不一样了
//不过还有另一种办法,改配置文件
vim .git/config
[remote "web"]
url = ssh://server.example.org/home/ams/website.git
url = ssh://other.exaple.org/home/foo/website.git
git remote rm origin
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
git push origin [local branch]:[remote branch],
我还一直以为,本地的分支只能推送到远程同名的分支上呢,不同分支也能传,只要没冲突。
git push origin :[remote branch],推送一个空分支,表示删除远程的分支
//push specified branch to remote
git push origin master
git push origin dev
//checkout specified branch on remote
git checkout -b dev origin/dev
因此,多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
git branch --set-upstream-to=origin/<branch-name> local-branch-name
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
然后,敲命令git tag <name>就可以打一个新标签(最近commit):
git log --pretty=oneline --abbrev-commit//查看历史提交
git tag v0.9 6224937 //指定提交打标签
git show <tagname> //查看标签信息
git tag -a v0.1 -m "version 0.1 released" 3628164 //打标签时加描述文字
git tag -s v0.2 -m "signed version 0.2 released" fec145a //私钥签名标签
命令git push origin <tagname>可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
在GitHub上,可以任意Fork开源仓库;
自己拥有Fork后的仓库的读写权限;
可以推送pull request给官方仓库来贡献代码。