git介绍和一些常用命令

可以将git简单的分为三个区域 
   1、工作区(working directry)2、暂缓区(阶段索引)  3、历史记录区(历史)    
如图:git add files把当前工作目录中的文件放入暂存区域其实做了两件事:1、将本地文件的时间戳,长度,当前文档对象的id等信息保存到一个树形目录中去(index,即平时说的暂存区)2、将本地文件的内容做快照并保存到Git的对象库(综上:实际上就是一个包含文件索引的目录树,像是一个虚拟的工作区。在这个虚拟工作区的目录树中,记录了文件名,文件的状态信息(时间戳,文件长度等),文件的内容并不存储其中,而是保存在Git对象库(.git / objects)中,文件索引建立了文件和对象库中对象实体之间的指向主分支的一个“游标”。所以图示的命令中出现HEAD的地方可以用master来替换。图中的对象标识的区域为Git的对象库,实际位于“.git / objects”     当对对工作区修改(或新增)的文件执行“git add”命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中     当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,主分支会做相应的更新。即掌握指向的目录树就是提交时暂存 区的目录树












  





 

常用的一些常用命令:

1. git add .(添加全部文件到本地)

2. git commit -a(提交全部文件到服务器)

3.git pull origin master(更新文件,在推前别人如有改动提交,一定要先拉后推)

4. git clone(克隆项目)

5. git reset hash values(--h)(回到某个记录),git reset简介(git reset [--hard | 软| 混合| 合并| keep [[commit>或HEAD]):http:/ /blog.csdn.net/hudashi/article/details/7664464

 git reset --hard e70c5e98222a2:已经提交到了本地版本库中,此时还没有提交到远程版本库中调用“回退到某个版本”

5.1 GIT中的复位-硬(撤销去修改这次但是这样做也。有问题,可能之前本地的,没有提交的修改,都消失了。可以尝试GIT中复归命令)

5.2 git reset --hard HEAD~3 (HEAD指向当前的提交对象,会将最新的3次提交全部重置,就像没有提交过一样) 

git reset HEAD(fileName)可以把暂存区的修改撤销掉(unstage),重新放回工作区

5.3 git reset - 文件用来撤销最后一次git add files(因为每git add file一次,暂存区的文件都会被更改一次),你也可以用git reset撤销所有暂存区域文件。

5.4 git reset --hard HEAD ^用来撤销已经提交的内容(等价于git reset --hard HEAD~1)。原理就是放弃工作区和index的改动,同时HEAD指针指向前一个commit对象

5.5 git checkout - file;撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件文件;这个命令改变的是工作区

  git reset HEAD - file;清空添加命令向暂存区提交的关于文件文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化

5.6 git reset与git revert的使用:https//www.cnblogs.com/yuyue2014/p/4826218.html

6. esc - >:wq:保存修改并退出

ESC - >:Q!:不保存修改并退出

7. git branch分支名(创建分支)

8. git branch(-r查看远程分支,-a查看全部分支)

8.1.git checkout -b <branchName>(创建分支并切换到此分支)

8.2.git branch -d branchName(只能删除已经被合并的分支)

8.3.git branch -D branchName(如果要强行删除某分支)

8.4 git checkout。或者“git checkout - <file>”或者git checkout - files命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动 

9. git checkout分支名(-f)(切换到某个分支)

10. git init(在本地模拟建一个服务端仓库)

11. git merge另一个分支名(和另一个分支合并)

12. git分支名-d(删除分支)

13. git tag标签名(这个命令只是在本地仓库打标签而已) - > git push origin v_7.1.3(标签名称)

14. git push [origin] --tags(push 所有标签),git push origin  [tagname](推单个标签)

15. git cherry-pick(把另一个分支的提交应用到本分支,步骤:git checkout thisbranch_name-> git cherry-pick commitid)

16.git rm -r(\ bin / gen /,删除服务器端文件夹)

 

16.1 git rm readme.txt不但从stage中删除,同时删除物理文件

16.2 git mv a.txt b.txt把a.txt改名为b.txt

17. git commit -m“提交的注释内容”

18. git stash(遇到冲突时,暂存自己修改内容,然后git pull)

19. git stash pop(弹出并清除暂存的内容,有冲突就手动去解决)

git stash list
git stash apply 
git stash clear

20. git status(当前目录所有还没有被git管理的文件和被git管理且被修改但未未提交(git commit)的文件)

     #要提交的更改:被修改并被执行了git add。
     #更改未提交为commit:被修改但还没被执行了git add。

21. git diff对比工作区和stage文件的差异

git difftool:调用图形化差异比较工具

git diff:可以产看当前没有添加内容修改
git diff --cached:查看已经添加没有提交的改动
git diff HEAD:是上面两条的合并
git diff版本号码1版本号码2 src:比较两个版本号码的SRC文件夹的差异

22. git checkout filename(撤销这个文件的改动)

23. GIT中复归哈希码(退回到以前某个提交记录,但没提交到服务器端,这次撤销也会作为一次提交进行保存,这样就不会丢失原来修改过,但是没有提交的内容)

24 git push(把退回的操作提交到服务器端)

25. git clean(删除一些没有git add的内容)

26. git clean -n(显示将要删除的文件和目录)

27. git clean -f(删除文件)

28. git clean -df(删除文件和目录)

29.git clean -d -fx(针对遇到删除未处理的工作树文件问题)

30.git ls-files -u显示冲突的文件,-s是显示标记为冲突已解决的文件

31.git ls-files --stage检查保存在stage的文件

32.Merge类命令

在冲突状态下,需要解决冲突的文件会从索引打回到工作区。

1.用工具或者手工解决冲突
2.git add命令来表明冲突已经解决.3。
再次提交已解决冲突的文件。

 git reset --hard ORIG_HEAD用来撤销已经提交的合并.git
 reset --hard HEAD 用来撤销还没提交的merge,其实原理就是放弃index和工作区的改动。

 git reset --merge ORIG_HEAD,注意其中的 - 硬换成了--merge,这样就可以避免在回滚时清除工作树。

33.git之HTTP或HTTPS方式记住用户名和密码

设置Git的用户名和电子邮件:
$ git config --global user.name“xuhaiyan”
$ git config --global user.email“haiyan.xu.vip@gmail.com”

HTTP方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受HTTPS带来的极速

设置记住密码(默认15分钟):git config --global credential.helper cache

如果想自己设置时间,可以这样做:git config credential.helper'cache --timeout = 3600'

这样就设置一个小时之后失效,长期存储密码:git config --global credential.helper store

git config --global gui.encoding utf-8:修改git客户端编码格式为utf-8

34.git提交代码时,如遇到致命:无法创建 'E:/git/Android/XXXXXX/.git/index.lock':文件存在。

    解决方法:rm'e:/git/Android/XXXXXX/.git/index.lock”  

35.git rebase合并提交:git rebase -i HEAD~2(合并最近两次提交)

http://blog.csdn.net/wangjia55/article/details/8490679  ,http://linux.cn/article-4046-1.html

git pull --rebase:http//blog.csdn.net/huangyabin001/article/details/30100287

36,git mv:重命名

37,git grep:文件内容搜索定位工具

38,gitk:是一个查看主干/分支情况的工具,它主要用于观察整个项目的分支状况,使用'gitk'命令就会出现一个图形化
界面供你查看39,git citool(同git-gui) :混帐可以本地提交代码,那么你自然可以本地修改你的提交了,这个工具就是可视化界面,用于修改你本地的提交

40,使用Git Submodule管理子模块https//segmentfault.com/a/1190000003076028 

41,git log:查看提交记录

42,git reflog:可以查看所有分支的所有操作记录(包括(包括提交和重置的操作),

43,git log -n 1 --stat:想看到最近一次提交所有更改过的文件

44,git log -n 1 -p:想看到最近一次提交所有更改的细节

45,远程先开好分支然后拉到本地

git checkout -b feature-branch origin / feature-branch //检出远程的feature-branch分支到本地

46,本地先开好分支然后推送到远程

$ git checkout -b feature-branch //创建并切换到分支feature-branch $ git push origin feature- branch: feature-branch //推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch (冒号后面的)分支(没有会自动创建)

47,git生成ssh:https://www.cnblogs.com/superGG1990/p/6844952.html,

步骤:1.ssh-keygen -t rsa -C “your_email@youremail.com”2.cat ~ / .ssh / id_rsa.pub

Git常用命令速查表(图文+表格):http://www.jb51.net/article/36152.htm   

 

的git的遇到的问题:

1,GitLab:的您已帐户被阻止
致命:无法从远程存储库读取。

解决方法:混帐提交时出现以上问题,只用重新设置下远程URL即可

$ git remote set-url origin git@yourhost.com:org / project.git或者另一种可能:重新登录gitlabgroup户

2,你的分支在6次提交之前领先于'origin / master'。

  (使用“git push”发布您的本地提交)

解决方法:

  • 如果您以其他方式工作并且应该推送您的本地更改,只需那么  git push origin 假设原点是您的远程

  • 如果您的本地更改不好,则只需删除它们或将本地主服务器重置为远程状态 git reset --hard origin/master

3.不能与* * * *协商:*。没有匹配的密钥交换方法他们的提议。的Diffie-Hellman-组1-SHA1

解决方法:在执行git pull / clone之前,输入:

export GIT_SSH_COMMAND ='ssh -o KexAlgorithms = + diffie-hellman-group1-sha1'  

这种方法每次打开混帐的窗口,都要重新输入一次。

可以在C:\用户\春\的的.ssh的配置文件下,添加

主持*。*。*。*(你自己项目的IP)
KexAlgorithms + diffie-hellman-group1-sha1

4. git主机密钥验证失败

不是密钥问题,不是权限问题,只是在询问(是/否)的时候直接回车了,输入是再回车就OK了!

5. github push提交代码时停止在写对象怎么办?

提交文件过大,可以在混帐的配置里将http.postBuffer变量改大一些即可,比如将上限设为500M:

git config --global http.postBuffer 524288000

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值