add git-commamd-file

This commit is contained in:
Zhu, Yingchun
2015-12-17 10:39:49 +08:00
parent c7a7b7f46a
commit 4788c5ddd2

View File

@@ -0,0 +1,113 @@
# git的使用 #
Git是一个由林纳斯·托瓦兹为了更好地管理linux内核开发而创立的分布式版本控制软件配置管理软件。需要注意的是和GNU Interactive Tools一个类似Norton Commander界面的文件管理器相区分。
:zap: 注意: 在使用 git 的过程中,如果我们需要查看帮助信息,可以 man git 或者 git help如果查具体的命令的 help 信息,可以用类似于 git init help 的语句来查看。
```
git init
```
当当前目录不是一个 git 库时,执行这个命令会把当前目录初始化一个 git 库。具体为在当前目录下新建一个 .git 的目录。 只有初始化了目录,才能进行后续操作。
如果我们从别的地方拷贝一个 .git 的目录到当前目录下,那就可以不执行 git init 的操作。
```
git add
```
这个操作通常是在 git init 操作或者修改了一个已有的 git 库以后执行。一般是直接
```
git add .
```
把当前所有文件加入到 git 库中。也可以用命令
```
git add filename1 filename2
```
来添加单个文件。
```
git commit
```
这个命令是用于提交git修改的命令格式为 git commit ,一般加上的选项有 -a。 执行这个命令之前最好先执行 git add .把所有文件都添加进git库以免有时新加文件后提交不上。
有时候我们提交完了才发现漏掉了几个文件没有加或者提交信息写错了。想要撤消刚才的提交操作可以使用amend 选项重新提交:
```
$ git commit amend -m”修改 提交 说明”
```
```
git branch
```
这个命令用于查看git分支。 常用操作有:
```
git branch -a 可以列出所有分支
git branch -D Branch-name 可以删除以 Branch-name 为名的分支
git branch Branch-name 可以添加一个以 Branch-name 为名的分支
git branch -m Branch-name1 Branch-name2 把 Branch-name1 分支修改为 Branch-name2
```
```
git checkout
```
这个命令可以取出某个 commit 或者某个 branch。
```
git checkout commit-name
git checkout branch-name
git checkout -- filename 这个操作会用上一次提交的 filename 文件覆盖现在的 filename 文件
```
```
git diff
```
此命令用于查看代码的修改。常用语法有:
```
git diff --color 可以显示颜色,且显示出当前版本(未提交)和之前版本的代码差异
git diff commit1 commit2 filename 可以查看文件 filename 在 commit1 和 commit2两个分支的区别
git diff HEAD^ HEAD filename 可以查看文件filename 在当前已提交版本和上一个已提交版本的区别
```
```
git log
```
显示git提交记录。 可以把后面添加上 branch 的名称,这样会列出该 branch 的提交记录。
```
git tag
```
养成打tag好习惯给当前commit打一个tag名称为 20101023_publish ,命令为:
```
$: git tag 20101023_publish
```
加上-f覆盖原有的tag
```
$: git tag -f 20101023_publish
```
显示所有的tag
```
$: git tag 20101015_publish 20101019_publish 20101021_publish
```
删除tag
```
$: git tag -d 20101023_publish
```
tag要push上服务器操作跟分支操作没有任何区别
```
$: git push origin 20101023_publish # push 到服务器
$: git push origin :20101023_publish # 从服务器上删除
```
:zap: 值得注意的是如果tag名字和分支名字一样的时候push需要指定refs的详细路径因为分支和tag在git内部是这样表示的只是引用tag只存储所指向的那一次提交
```
refs/tags/{tagnane} refs/heads/branches/{branchnane}
```
所以要这样push相同名字的tag和分支
```
$: git push origin refs/tags/product $: git push origin refs/heads/branches/product
```
把所有的tag都push到服务器上
```
$: git push origin --tags
```
```
git clone
```
克隆 git 库到当前目录。语法: git clone git-url (比如: git clone git@rd-server:sources/adduser.git 新创建 git 库也用这个命令,不过需要添加一个参数 git clone bare git-url ,这样会只克隆 .git 目录。
```
git merge
```
这个命令需要在被合并的分支上操作。 假设需要把 branch1 merge 到 master 分支,执行:
```
git checkout master
git merge branch1
```
这样就会把 branch1 merge 到 master 分支上。