git学习记录

git分为三个工作区域:
工作区 Working Directory
暂存区 Staging Area
GIT仓库 repository,git仓库又有本地和远程的概念,一般来讲,本地仓库会优先于远程仓库

git仓库中的文件,不外乎这几种状态:
Untracked 未追踪,即新建一个a.js文件,还没有被git追踪,不会到版本库内。
Unmodified 未修改,该文件在git版本库内,但是还没有被修改。
modified 已修改,该文件在git版本库,已经修改,但还没有暂存。
Staged 已暂存,有修改的文件已经通过git add <file>添加到暂存区。

如果未安装bash-completion , 先用sudo apt-get install bash-completion命令安装.这个用来使能git的命令自动补全功能的。
在/etc/profile文件最后加入:
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
fi


sudo apt-get install git-core

git config -e [--global | --system | --local]使用vi打开配置来编辑
git config --list 查看git配置
git config --global user.name "user name"
git config --global user.email "user_name@gmail.com"
git clone "https://github.com/git/git.git"拷贝一个git项目仓库。如果网络不好采用这种方式失败率很高,可以用下面的方式:
mkdir git && cd git
git init 初始化一个空仓库;git init --bare 初始化一个空仓库,无工作区,适合于服务器仓库
git pull "https://github.com/git/git.git"

git remote -v 查看远程仓库源
git remote add origin "https://github.com/git/git.git" 添加一个远程仓库源,命名为origin

git diff --cached 看看哪些文件将被提交(commit)
git diff 会显示当前你所有已做的但没有加入到索引里的修改
git status 查看索引区内容,就是查看哪些文件被修改了但是没有暂存, 还有哪些文件没有被跟踪(untracked)

git add file1 file2 file3 新增加或是已修改的文件都需要add到索引中

git commit -m 记录 [files]: 以“记录“作为提交日志,将files文件提交到仓库
git commit -a 这会自动把所有内容被修改的文件(不包括新创建的文件)都添加到索引中,并且同时把它们提交。
git commit --amend : 覆盖之前的提交信息,运行此命令会将暂存区文件提交,

git branch 查看当前项目的分支,“master”分支是Git系统默认创建的主分支,星号(“*”)标识了你当工作在哪个分支下
git branch -r :查看远程分支列表
git branch br_name 创建分支
git branch -d br_name 删除分支,只能删除那些已经被当前分支的合并的分支
git branch -D br_name 强制删除某个分支

git checkout -- '*.c' 将*.c文件从index中checkout到工作区
git checkout [commit_id] [file]护肤某个commit的指定文件到暂存区和工作区
git checkout br_name 切换到br_name分支下(将br_name作为当前工作分支)
git checkout -b br_name 创建分支br_name,并切换到br_name分支下
git checkout tag_name 切换到当前分支的tag_name标签下,HEAD指向tag_name的commit
git checkout master^^ HEAD指向父父commit,也可用git checkout master~2
git checkout -b [branchname] [tagname] : 在特定的标签上创建一个新分支

git merge br_name 将br_name分支合并到当前分支中,如有冲突,需要手动解决冲突后再add索引中

git reset -- files 将files文件从仓库恢复到暂存区index,但工作区不变
git reset --hard 重置暂存区和工作区,与上一次commit保持一致
git reset HEAD <file> : 将暂存区的文件回退至已修改状态,staged -> modified,文件add之后回退可用。
git reset --hard HEAD 如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用这个命令回到合并之前的状态
git reset --hard HEAD^ 回退到上个版本,commit之后算一个版本。
git reset --hard HEAD~100
git reset --hard commit_id : 移动HEAD指针,会退到指定commit_id的版本。
git reset --keep commit_id重置当前HEAD为指定commit,但保持暂存区和工作区不变
git reset --hard ORIG_HEAD 如果你已经把合并后的代码提交,但还是想把它们撒销。这条命令在某些情况会很危险,如果你把一个已经被另一个分支合并的分支给删了,那么 以后在合并相
关的分支时会出错

git log 命令可以显示所有的提交(commit)日志,
git log file 查看file文件或目录的提交记录
git log -p显示补丁
git log --stat 它会显示在每个提交(commit)中哪些文件被修改了, 这些文件分别添加或删除了多少
git log --pretty=oneline/short/
git log --pretty=format:'%h : %s' --graph 可视化你的提交图(commit graph)行内容

git rm <file> :将某个已被追踪的文件删除,提交之后该文件不会再被追踪,同时本地也会删除该文件。
git rm --cached <file> : 同上,不再追踪某个文件,但是本地磁盘内不会删除该文件,回到Untracked状态。

git tag :列出所有标签。
git tag -l release :列出所有包含release字段的tag。
git tag -a v1.0 -m 'my v1.0 version' : 创建附注标签,使用git show v1.0查看详细信息。
git tag v1.0 :创建轻量标签。
git tag v1.0 commit_id : 给某个历史提交commit_id打标签,可以使用git log --pretty=online查看历史请求。

git push origin [tagname] : 推送单个标签到远端
git push origin --tags : 推送所有本地标签到远端

git stash 暂时将未提交的变化移除
git stash pop 将之前是stash恢复

git reflog 显示所有操作记录,误操作后可以通过它里面显示的commit_id使用git-reset命令来恢复

posted @ 2019-08-07 11:35  白水白水  阅读(148)  评论(0编辑  收藏  举报