yum install git
git config --global user.name'xxxxx'
git config --global user.email'[email protected]'
git init
此时在该目录下会生成一个.git文件夹
git clone http://xxxxx.git
进入你的项目文件夹,执行如下指令
git config credential.helper store
然后执行一次拉取
git pull
重新输入一次账号密码,下一次执行git pull时则不再提示
git pull拉取远程仓内容的时候有可能会出现以下报错:
error: Your local changes to the following files would be overwritten by merge:
xxx/xxx/xxx.php
Please, commit your changes or stash them before you can merge.
Aborting
这是由于你liunx本地项目有修改而与远程仓的代码冲突,此时有3种解决办法:
git stash
git pull
git stash pop
git reset --hard
git pull
进入项目所在目录
git remote
查看远程仓
git remote -v
重新设置你新的远程仓库地址
git remote set-url origin http.xxx.git
从远程仓库拉取下来到本地的文件A,本地修改了,但修改不想再被跟踪提交,远程仓库A文件因为多人共用,所以不能删除:
进入项目文件夹,右键Git Bush Here
输入指令:git update-index --assume-unchanged
如果要忽略的是文件,则后面直接写文件名,如a.txt :
git update-index --assume-unchanged a.txt
如果要忽略的是文件夹,则后面写文件夹名加/,如文件夹A :
git update-index --assume-unchanged A/
一旦使用assume-unchanged,文件将不再从远程仓库pull更新,也不再push推送远程仓库了。
如果要恢复跟踪,可使用指令:git update-index --no-assume-unchanged
如果即想要远程仓库对应文件的更新,又不想要将自己本地的修改提交(即关闭GIT跟踪本地文件修改):
进入项目文件夹,右键Git Bush Here
输入指令:git update-index --skip-worktree
git update-index --skip-worktree a.txt
skip-worktree:不会关闭本地文件对远程仓库的跟踪,只是告诉Git不要跟踪对本地文件的更改,pull时会拉取最新的更新。
但要更新则需要no-skip-worktree再pull拉取合并最新更新(即打开GIT跟踪本地文件修改):
git update-index --no-skip-worktree a.txt
1.进入项目,右键git bush here ,输入git status 查看状态,出现三个状态列表:
①Untracked files 即未跟踪的状态,这是文件的初始状态,也就是在工作区中的状态,就是新建的文件/文件夹,也没有操作过git add,git压根不知道你这个文件的信息,没有生成快照
Untracked files:
(use "git add ..." to include in what will be committed)
这个状态下排列的是新建的文件和文件夹
②Changes to be committed 即文件在暂存区中生成了快照等待被提交(commit)
Changes to be committed:
(use "git restore --staged ..." to unstage)
这个状态下排列的是大量A文件夹目录下的删除和修改
③Changes not staged for commit 即文件生成过快照,但是又有了新的修改,并且没有生成新的快照
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)
这个状态下排列的是大量A文件夹目录下的修改
**三种状态的变换:**①-(git add)-》②-(未commit提交到线上,本地再次修改)-》③
正常git status后只会有状态①或者没有任何更新,如果存在状态①的文件,需要提交,则可以使用指令:git add 文件名 或者 git add . 即将工作区的某个文件、某些文件、或者是所有文件,所作出的修改(新建、删除也算的),添加至暂存区,此时文件就可以进行下一步的git commit了,再使用git status可以看到这些文件的状态变成了②
如果有存在③状态的文件,意思是这些文件有修改的部分没有生成快照,不能进行commit提交
git区域分为工作区(本地所有文件)暂存区(git add 的文件,即提交的文件),使用git commit或点击推送到远程仓会把暂存区的文件更新到远程仓,③状态即还未推送又修改了暂存区的内容
要清理git status下的三种状态文件,使本地与线上关联的文件保持一致:
线上指引:
1清除③状态文件,使用指令:git reset HEAD 文件名或文件夹名
git reset既可以用在版本回退,也可以用在撤销暂存区的修改,将文件重新放回工作区,HEAD代表此前的最新版本;
2清除②状态文件,使用指令:git checkout 文件名或文件夹名
git checkout将该文件在工作区中的修改,全部撤销,返回到最近一次git commit或者git add时的状态;
3再次使用git status可以看到只剩下状态①的文件了
本地测试结果:
1指令操作完之后,git status查看,原来存在①②③三种状态的文件,只剩下①③状态,并且③状态的所有文件前面都带上了modified:
接着操作2指令后,git status查看,只剩下①状态,完成。但从状态的转变看并不是理论上的把③变成②后撤销工作区修改,而是把②变成了③后取消了该文件夹的所有修改同步了线上
补充:
已经使用git commit 提交到本地分支上的修改 回退:可以采用版本回退,回到之前的版本
方案一:
git reset --hard HEAD^
注:HEAD为当前版本、HEAD^为上一个版本、HEAD^^为上上个版本,以此类推
方案二:
先使用 git log --pretty=online 查看版本号记录,再使用git reset --hard 版本号回到之前版本
git log --pretty=online
git reset --hard 版本号