Git命令 未完结

一、在客户机上生成公钥和私钥

$ ssh-keygen -t rsa -C "[email protected]"

生成的文件存放在用户目录的.ssh目录下,默认文件名为:id_rsa(私钥),id_rsa.pub(公钥)。

二、设置/修改名称与邮箱:

$ git config --global user.name "yourname"
$ git config --global user.email " [email protected] "

三、查看名称与邮箱

$ git config user.name
$ git config user.email

四、克隆远程库到本地

首先在git bash中定位到建立本地库的位置。

$ git clone git@GitHub上该仓库的URL.git

五、假如将一个新文件如test.txt放入Git仓库

(1)用命令git add告诉Git将某个文件添加到了仓库

$ git add test.txt

(2)用命令git commit告诉Git将文件提交到仓库,可以一次提交多个文件

$ git commit -m "add a new file"

-m后的内容是对git仓库改变的描述。
执行完上述命令后,git bash中出现下面的内容:1个文件被改变,插入了一行数据

[master f0a585d] add a new file
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

六、git status 查看仓库当前的状态,结果如下:

On branch master
Your branch is ahead of 'origin/master' by 4 commits.
  (use "git push" to publish your local commits)
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        readme.txt.bak
        test.txt.bak

nothing added to commit but untracked files present (use "git add" to track)

Untracked files所列的内容是没有被Git追踪的内容,如果只列出所有已经被git管理的且被修改但没提交的文件执行

$ git status -uno

七、执行git status如果显示某个文件被修改,并且想查看修改的内容

$ git diff test.txt

结果如下:

diff --git a/test.txt b/test.txt
index c920a1f..9319b8f 100644
--- a/test.txt
+++ b/test.txt
@@ -2,3 +2,4 @@ 
 test git
 github
 git
 test
+include


结果解析:
- - -代表源文件
+++代表目标文件
由@@开头,@@结尾的行表示在源文件第2行开始的3行和目标文件第2行开始的4行构成一个差异小结
-开头的行,是只出现在源文件中的行
+开头的行,是只出现在目标文件中的行
空格开头的行,是源文件和目标文件中都出现的行

八、把修改后的文件提交到仓库

$ git add test.txt
$ git commit -m "test update"

九、删除文件

$ rm test.txt

执行上述命令后,查看状态,Git会指明哪个文件被删除了,此时工作区和版本库就不一样了。

$ git status
On branch master
Your branch is ahead of 'origin/master' by 9 commits.
  (use "git push" to publish your local commits)
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    readme.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        readme.txt.bak
        test.txt.bak

no changes added to commit (use "git add" and/or "git commit -a")

两种情况:
1.确实从版本库中删除该文件,删除之后并提交。

$ git rm test.txt
$ git commit -m "remove"

2.删错了,将误删的文件恢复到最新版本

扫描二维码关注公众号,回复: 4276176 查看本文章
$ git checkout -- readme.txt

git checkout 是用版本库中的版本替换工作区中的版本。

十、先有本地库后有远程库时如何关联远程库

首先在github官网上建立远程仓库,然后将本地仓库和新建的远程仓库建立连接。
1.进入到本地仓库后,执行一下命令则将本地仓库和远程仓库连接起来。远程库的名字就是origin

$ git remote add origin git@github.com:www-zhangyu/zhangyu_test.git

2.将本地库的内容推送到远程库上
第一次推送:加上了 -u,git不但会将本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或拉取时简化命令。

$ git push -u origin master

之后用git push origin master推送最新更改。

十一、创建分支

1、创建dev分支,并切换到该分支

$ git checkout -b dev

加上-b参数表示创建并切换,相当于两条命令:

$ git branch dev
$ git checkout dev

2、查看当前分支

$ git branch

会列出所有分支,当前分支前加“*”
3、我们可以在dev分支上正常提交而不影响其他分支,dev分支的工作完成后切换到master分支,把dev的工作成果合并到master分支。

$ git checkout master
$ git merge dev

git merge命令用于合并指定分支到当前分支

4、删除分支

$ git branch -d dev

十二、解决冲突

如果两个分支同时修改了同一个文件并合并到master分支时会存在冲突,如下面代码显示readme.txt文件存在冲突,必须手动解决冲突后再提交。

$ git merge zhangyu
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

此时readme.txt文件内容为

readme
<<<<<<< HEAD
branch master
=======

branch zhangyu
>>>>>>> zhangyu

git以<<<<<,=====,>>>>>标记处不同分支的内容,手动修改后保存,重新提交

$ git add readme.txt
$ git commit -m "conflict fixed"

查看分支合并图:

$ git log --graph

十三、–no-ff方式的merge

强制禁用“Fast Forward”方式合并分支

$ git merge --no-ff -m "merge --no-ff" dev

猜你喜欢

转载自blog.csdn.net/u013739073/article/details/77053538