Git基础操作
拉代码
方法一
直接clone,复制远程仓库文件夹
git clone git@gitee.com:chen-LinQiang/my-notes.git
方法二
在已有仓库文件夹中拉代码
# 初始化
git init
# 关联远程仓库
git remote add origin git@gitee.com:chen-LinQiang/my-notes.git
# 切换到本地主分支
git checkout master
# 若报错error: pathspec 'master' did not match any file(s) known to git.
# git fetch # 获取全部分支,若无效,则
# git fetch origin # 获取远程分支
# git branch -vv # 查看分支关联情况
# 拉代码
git pull
推代码
git push
git push -u origin master
相当于
git branch --set-upstream-to=origin/master master//将远程仓库origin的master分支与本地仓库master分支关联
加
git push origin master
基础操作
-
创建本地仓库
mkdir local_repository
-
初始化本地仓库
git init ---- Initialized empty Git repository in D:/cc/learngit/.git/
-
关联远程仓库
git remote add origin git@gitee.com:chen-LinQiang/test_project.git
扩展:删除关联(git remote rm origin)
-
检查关联是否成功
git remote -v ---- origin git@gitee.com:chen-LinQiang/test_project.git (fetch) origin git@gitee.com:chen-LinQiang/test_project.git (push)
-
开始跟踪某个文件
git add a.txt
批量跟踪所有工作目录下未被跟踪的文件
git add .
每次修改后都要重新add,否则commit上去的为上次add的版本
-
查看文件状态
“Untracked files”:未被跟踪的文件
“Changes to be committed”:暂存状态,commit后将留存版本在历史记录中
-
查看内容差异
# 查看尚未暂存的文件更新了哪些部分 git diff # 查看已经暂存起来的文件和上次提交时的快照之间的差异 git diff --cached
-
跳过使用暂存区域
# 加上-a选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交 git commit -am "test"
[注意] git commit -am可以写成git commit -a -m,但不能写成git commit -m -a
# 查看暂存区文件 git ls-files
-
从暂存区域移除文件
git rm --cached a.txt
会删除所有被跟踪,但在工作目录被删除的文件
git rm $ (git ls-files --deleted)
-
撤销操作
-
修改提交说明
git commit --amend
[注意] 此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。
-
-
推送到远程仓库
git push origin master # -u 记住推送地址及分支,下次推送只需要输入git push即可 git push -u origin master
-
查看文件提交历史
git log ./path/to/file
文件移动或rename后,查看完整历史提交记录
git log --follow ./path/to/file
简洁查看提交历史
git log --pretty=oneline filename # 查看分支所有提交历史 git log --pretty=oneline
分支操作
-
查看分支
git branch # 查看本地分支 git branch -r # 查看remote分支 git remote # 查看remote分支 git branch -a # 查看本地分支以及remote分支 git branch -vv # 查看本地和远程分支的对应关系
-
创建分支
# 创建本地分支 git branch <name> # 创建新分支并立即切换到新分支 git checkout -b <name> # 创建远程分支 git push origin <name>
-
删除分支
# 删除本地分支 git branch -d <name>
回滚操作
-
已提交,没有push
# 只撤销commit操作 git reset --soft <commit_id> # 撤销commit和add两步操作 git reset --mixed <commit_id>
-
已提交,并且push
# 撤销并舍弃版本号之后的提交记录 git reset --hard <commit_id> # 撤销,但保留了提交记录 git revert <commit_id> # 注意id为要撤销的commit id
关键字
origin
origin的意思是指“远程仓库”,就是远程仓库链接的别名,是在clone一个托管在Github上代码库时,git默认创建的指向这个远程代码库的标签,origin指向的就是本地的代码库托管在Github上的版本。
git clone https://github.com/user1/repository
git remote -v
----
origin https://github.com/user1/repository.git (fetch)
origin https://github.com/user1/repository.git (push)
git为你默认创建了一个指向远端代码库的origin
报错问题
git add时换行符问题warning
warning: LF will be replaced by CRLF in py_script/yaml/write.yaml.
The file will have its original line endings in your working directory
原因
LF和CRLF其实都是换行符,但是不同的是,LF是linux和Unix系统的换行符,CRLF是window 系统的换行符。这就给跨平台的协作的项目带来了问题,保存文件到底是使用哪个标准呢? git为了解决这个问题,提供了一个”换行符自动转换“的功能,并且这个功能是默认处于”自动模式“即开启状态的。
这个换行符自动转换会把自动把你代码里 与你当前操作系统不相同的换行的方式 转换成当前系统的换行方式(即LF和CRLF 之间的转换),这样一来,当你提交代码的时候,即使你没有修改过某个文件,也被git认为你修改过了,从而提示"LF will be replaced by CRLF in *****"
解决
最简单的一种办法就是把自动转换功能关掉即可。
输入命令 :git config core.autocrlf false (仅对当前git仓库有效)
git config --global core.autocrlf false (全局有效,不设置推荐全局)