Git基本操作
- 克隆仓库
- 配置全局用户名和邮箱
- 配置
core.autolf
- 初始化git仓库
- 查看状态
- 提交更改
- 删除commit
- 回退更改/回退版本
- 查看已提交的更改
- 添加更改
- 分支操作
- 添加远程仓库
- 远程推送
- git代理
- git tag
- windows下git提示文件名过长
- 解决windows下
git status
中文显示数字串问题 git pull
时遇到unable to update local ref
错误
克隆仓库
-
克隆某个仓库 :
git clone {仓库地址}
-
克隆指定分支 :
git clone -b {分支} {仓库地址}
配置全局用户名和邮箱
电脑第一次安装git的话,必须要先配置一下全局用户名和邮箱
git config --global user.name "输入用户名"
git config --global user.email "输入邮箱"
配置core.autolf
CRLF(Carriage-Return Line-Feed: 回车换行)
和 LF(line feed: 换行)
表示系统换行符;
CRLF
符号表示为: \r\n
, LF
符号表示为\n
;
Windows中的换行符风格为CRLF
, Unix/OSX中换行符风格为LF
;
core.autolf
可配置为:
true
: windows中这是默认值; 此时添加文件到git时, 会自动将CRLF
变为LF
; 迁出(check)操作时, 会自动将LF
变为false
: 此时git不会对换行符做任何转换操作input
: 提交时将CRLF
变为LF
; 迁出(check)操作时不做转换操作
git config --global core.autocrlf input
初始化git仓库
把当前目录初始化成git仓库: git init
查看状态
git status
git status -s
提交更改
git commit -m 'Add files.'
git commit -m 'Modify [file].' -a
删除commit
经常commit完之后发现又有地方要重新修改(捂脸), 很长一段时间我都会为了这一点小修改重新commit, 导致有很多commit注释重复的commit; 但是其实可以在不改变当前代码的情况下删除上一次的commit的, 使用下面的指令即可
git reset --soft HEAD^
--soft
不删除工作空间改动代码,撤销commit,不撤销git add;
--hard
删除工作空间改动代码,撤销commit,撤销git add;
注意完成这个操作后,工作空间就恢复到了上一次的commit状态, 会丢失当前的代码, 要谨慎;
回退更改/回退版本
git reset --hard HEAD^
查看已提交的更改
git log
git log --pretty=oneline
git show
查看没有push到远程仓库的commit
git cherry -v
添加更改
使用通配符同时添加所有的更改
git add '*.txt'
添加指定的多个文件
git add [file1] [file2] ...
分支操作
-
列出本地分支
git branch
-
新建一个名为Fav的分支
git branch Fav
-
切换到Fav分支
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
git checkout Fav
-
新建mahapp分支并切换到该分支
-
删除Fav分支
要先切换到其他分支才能删除Fav分支
git checkout master
删除Fav分支
git branch -d Fav
-
合并分支并解决冲突
新建两个分支:fav mahapp
分别切换到三个分支下修改Readme.md文件的内容,查看结果如下.
然后合并fav分支到master(当前所在分支):git merge fav
提示Readme.md文件产生了冲突,可以通过git merge --abort
取消刚才的合并操作;也可以手动解决冲突然后继续提交.
修改冲突的Readme.md文件,修改前:
修改后:
此时冲突已经被我们手动解决了, 我们还需要使用git add
命令来告诉git冲突已经被我们解决了.
冲突解决,完.
git log
中也可以看到合并的记录.
删除远程分支
git push origin --delete <remote branch>
添加远程仓库
git remote add origin https://github.com/try-git/try_git.git
列出远程仓库git remote -v
远程推送
git push -u origin master
可能会需要输入用户名和密码
git代理
查看git代理
git config --global http.proxy
git config --global https.proxy
设置git代理
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
取消(删除)代理设置,有时候git push会出现无法push的情况,可能就是代理有问题,把代理删了可能可以解决问题,如果开了FQ软件,可以设置一个代理,可能会提高push的速度.
git config --global --unset http(s?).proxy
git tag
Git中有一个打标签的功能, 可以给某一次commit打一个标签, 以示重要. 这个功能一般用来发布版本, 比如某个软件基本功能都开发忘了, 就可以打一个标签 v1.0.0, 然后发布, 结合github使用体验很棒.
相关指令
-
列出所有标签
git tag
-
查找特定的标签
git tag -l v1.0.0
-
创建标签
git tag -a v1.4 -m "my version 1.4"
windows下git提示文件名过长
git有可以创建4096长度的文件名,然而在windows最多是260,因为git用了旧版本的windows api, 所以在windows下, git可能会提示文件名过长;
解决:
git config --global core.longpaths true
解决windows下git status
中文显示数字串问题
执行 git config --global core.quotepath false
即可
git pull
时遇到unable to update local ref
错误
遇到这个错误的话, 先执行下git gc --prune=now
然后在执行git pull
即可