git的使用,用以记录,以后忘记查看,有想要学习的童鞋也可参考

来源:互联网 发布:python 输出汉字乱码 编辑:程序博客网 时间:2024/05/18 15:04

本文为自我记录:全文参考点击打开链接,如果一点都不会的童鞋,可以点进这里面去看,图文介绍非常详细,

如果想要直接找到想要的命令行,可以跳过中间部分,往文尾走,

如果想温习的童鞋,就请慢慢看咯


创建用户标识:

git config --global user.name "lz511321"
git config --global user.email "lz511321@163.com"


创建版本库:
cd D:
cd www:
mkdir testgit
cd testgit
pwd(显示当前目录)


通过命令将当前目录变为git可以管理的仓库:
git init


将文件添加到暂存区里面去:
git add text.txt


提交文件到仓库
git commit -m "提交暂存区所有文件"(注释)(提交的是暂存区中所有的文件) 


查看状态:
git status


查看某个文件修改的内容:
git diff text.txt


查看操作日志:
git log


日志变为单行显示:
git log --pretty=oneline


回退到上一个版本:
git reset --hard HEAD^


查看文件内容:
cat text.txt


获取操作版本号:
git reflog


回退至版本号:
git reset --hard 45ddd


git stutas查看到的状态表示:
wodified:text.txt(修改文件)  text.txt(新增文件)


丢弃工作区的修改:
git checkout -- text.txt(注意空格)
撤销修改存在两种情况:
1.readme.txt自动修改后,还没有放到暂存区,使用撤销修改就回到和版本库一模一样的状态。
2.另一种是readme.txt已经放在暂存区了,接着又做了修改,撤销修改就回到添加暂存区后的状态


删除文件:
rm b.txt (想要彻底删除,需要commit)


删除的文件从版本库中恢复:
git checkout -- b.txt
--------------------------------以上为本地仓库操作------------------------------
生成SSH密钥过程:
1.查看是否已经有了ssh密钥:cd ~/.ssh
如果没有密钥则不会有此文件夹,有则备份删除
2.生存密钥:
ssh-keygen -t rsa -C “haiyan.xu.vip@gmail.com”   --空格严格按照格式来
按3个回车,密码为空。


关联至githup远程仓库:
git remote add origin https://githup.com/lzandsusu/textgit.git


清除关联:
git remote remove origin


删除ssh文件(存放公私钥的文件夹):
ssh-add -D
rm -r ~/.ssh


本地仓库推送到远程仓库:
git push -u origin master


远程仓库克隆到本地仓库:
git clone https://githup.com/lzandsusu/testgit2


-------------分支部分-----------------
在版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,
这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,
即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,
所以,HEAD指向的就是当前分支。


查看分支:
git branch


创建并切换到分支:
git checkout -b dev   --创建了一个名为dev的分支,并切换过去


创建分支:
git branch dev


切换分支:
git checkout dev


合并分支:(将指定分支合并到当前分支上,分支未合并之前,各个分支互不影响)
git merge dev(分支名)


删除分支:
git branch -d dev(分支名)


---------------解决冲突篇-----------------
冲突往往是在分支合并时产生的,此时先查看状态git status,然后通过提示冲突文件去读取
则能够看到冲突产生的地方(cat readm.txt),如下:
$ cat readm.txt
111111111111111
222222222222222
333333333333333
444444444444444
<<<<<<< HEAD
999999999999999
=======
888888888888888
>>>>>>> fenzhi
其中HEAD表示主分支修改内容,>>>>fenzhi表示fenzhi上修改的内容


通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,
会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。
下面是操作记录,由最后的log打印处之前分支添加的注释"add merge"可以看到,
选择删除分支后,分支信息与版本号都还存在
lz@DESKTOP-4OCB038 MINGW64 /f/testgit (dev)
$ git add readm.txt


lz@DESKTOP-4OCB038 MINGW64 /f/testgit (dev)
$ git commit -m "add merge"
[dev e9f436e] add merge
 1 file changed, 1 insertion(+)


lz@DESKTOP-4OCB038 MINGW64 /f/testgit (dev)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 3 commits.
  (use "git push" to publish your local commits)


lz@DESKTOP-4OCB038 MINGW64 /f/testgit (master)
$ git branch
  dev
  fenzhi
* master


lz@DESKTOP-4OCB038 MINGW64 /f/testgit (master)
$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
 readm.txt | 1 +
 1 file changed, 1 insertion(+)


lz@DESKTOP-4OCB038 MINGW64 /f/testgit (master)
$ git branch -d dev
Deleted branch dev (was e9f436e).


lz@DESKTOP-4OCB038 MINGW64 /f/testgit (master)
$ git branch
  fenzhi
* master


lz@DESKTOP-4OCB038 MINGW64 /f/testgit (master)
$ git log --graph --pretty=oneline --abbrev-commit
*   4b7d70a (HEAD -> master) merge with no-ff
|\
| * e9f436e add merge
|/
*   1db1976 冲突解决
|\
| * ae6cef7 (fenzhi) 添加内容888888888888
* | 935b53a 在master分支上新增内容999999999
|/
* ca813cf (origin/master) 添加名为b的txt文件
* 626a474 一次性提交两个
* 136eed3 增加内容为33333
* 56c62c0 提交修改
* 884a2f4 这是一个测试文本(text.txt)


---------------------继分支篇------------------
当目前的工作环境有东西需要提交,但是自己不想提交而是想去做其他地方的东西时,
可以采用下面的方法:


隐藏工作环境:(将当前环境暂时隐藏起来)
git stash
然后采用开时的分支创建之类的操作完成想要完成的操作


当完成操作切换回之前的分支时,工作区依然是干净的,之前的工作现场可以通过两种
方式恢复:
查看工作区:git stash list


1:git stash apply,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除
2:另一种方式使使用git stash pop,恢复的同时把stash内容也删除了


查看远程库信息:
git remote


查看远程库详细信息:
git remote -v


----------------推送分支(主)--------------
把所有本地提交到远程库中,推送时,要制定本地分支,这样git就会把该分支推送到远程库对于的
远程分支上:
命令:

git push origin master


分支推送:

git push origin local_branch:remote_branch
这个操作,local_branch必须为你本地存在的分支,remote_branch为远程分支,如果remote_branch不存在则会自动创建分支。
类似,git push origin :remote_branch,local_branch留空的话则是删除远程remote_branch分支。



-------完结----------
因此:多人协作工作模式一般是这样的:


首先,可以试图用git push origin branch-name推送自己的修改.
如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。
Git基本常用命令如下:


   mkdir:         XX (创建一个空目录 XX指目录名)


   pwd:          显示当前目录的路径。


   git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。


   git add XX       把xx文件添加到暂存区去。


   git commit –m “XX”  提交文件 –m 后面的是注释。


   git status        查看仓库状态


   git diff  XX      查看XX文件修改了那些内容


   git log          查看历史记录


   git reset  –hard HEAD^ 或者 git reset  –hard HEAD~ 回退到上一个版本


                        (如果想回退到100个版本,使用git reset –hard HEAD~100 )


   cat XX         查看XX文件内容


   git reflog       查看历史记录的版本号id


   git checkout — XX  把XX文件在工作区的修改全部撤销。


   git rm XX          删除XX文件


   git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库


   git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库


   git clone https://github.com/tugenhua0707/testgit  从远程库中克隆


   git checkout –b dev  创建dev分支 并切换到dev分支上


   git branch  查看当前所有的分支


   git checkout master 切换回master分支


   git merge dev    在当前的分支上合并dev分支


   git branch –d dev 删除dev分支


   git branch name  创建分支


   git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作


   git stash list 查看所有被隐藏的文件列表


   git stash apply 恢复被隐藏的文件,但是内容不删除


   git stash drop 删除文件


   git stash pop 恢复文件的同时 也删除文件


   git remote 查看远程库的信息


   git remote –v 查看远程库的详细信息


   git push origin master  Git会把master分支推送到远程库对应的远程分支上git push origin local_branch:remote_branch  git push origin local_branch:remote_branch