git &github 快速入门

git命令

准备
$ mkdir git_trainning 创建文件夹
$ cd git_trainning/ 切换到这个文件夹

$ git init 在git_trainning 下面创建隐藏文件.git
如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见


文件
在该文件夹下面,添加到版本库
$ vim first_git_file.txt 创建一个first_git_file.txt文件
w 切换到编辑状态
点esc 再 :wq 来保存退出


$ git add first_git_file.txt
$ git commit -m "提交的说明"

代码回滚
git status命令看看结果:
$ git diff first_git_file.txt(输出中+号绿色显示的就是修改或新增的内容,-号红色显示的就是去掉或被修改的内容)


$ git log 查看每次的修改
$ git log --pretty=oneline 查看每次的修改,并一行展示

命令窗口没关时:
$ git reset --hard HEAD^ 把当前版本回退到上一个版本
$ git reset --hard 4459657 回滚到指定版本

命令窗口已经关闭过:
$ git reflog 记录你的每一次命令
$ git reset --hard 4459657 回滚到指定版本


$ cat README cat命令一个最简单的用处是显示文本文件的内容。例如,我们想在命令行看一下README文件的内容,可以使用命令:

Git Stash

git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
关于Git Stash的详细解释,适用场合,这里做一个说明:

 

使用场合了:当前工作区内容已被修改,但是并未完成。这时Boss来了,说前面的分支上面有一个Bug,需要立即修复。可是我又不想提交目前的修改,因为修改没有完成。但是,不提交的话,又没有办法checkout到前面的分支。此时用Git Stash就相当于备份工作区了。然后在Checkout过去修改,就能够达到保存当前工作区,并及时恢复的作用。
但是,stash  pop  出来的内容只是你上次stash时候的内容,那个时候你还没有修复这个Bug。所以此时的内容不会包含你修复那个Bug的内容,此时要用cherry-pick来通过增量的方法将修复的内容合并到新版本上,如果有冲突需要手动解决。

会包含.如果冲突了.会提示一个merge.需要手动解决...

 

git merge

git merge 用来做分支合并,将其他分支中的内容合并到当前分支中。比如分支结构如下:

                        master
                         /
C0 ---- C1 ---- C2 ---- C4
                         \
                         C3 ---- C5
                                  \
                                issueFix

当前分支是master
$ git checkout master

把issueFix中的内容Merge进来:
$ git merge issueFix

如果没有冲突的话,merge完成。有冲突的话,git会提示那个文件中有冲突,比如有如下冲突:

<<<<<<< HEAD:test.c

printf (“test1″);

=======

printf (“test2″);

>>>>>>> issueFix:test.c

可以看到 ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时检出的分支)中的内容,下半部分是在 issueFix 分支中的内容。解决冲突的办法无非是二者选其一或者由你亲自整合到一起。比如你可以通过把这段内容替换为下面这样来解决:

printf (“test2″);

这个解决方案各采纳了两个分支中的一部分内容,而且删除了 <<<<<<<,=======,和>>>>>>> 这些行。在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决(resolved)。因为一旦暂存,就表示冲突已经解决。如果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突

  

  

git &github 快速入门

http://www.cnblogs.com/alex3714/articles/5930846.html

posted @ 2018-01-24 21:50  MaryMaryTang  阅读(104)  评论(0)    收藏  举报